editor
search
challenges
pseudocode
sql
exam q's
resources
PSEUDOCODE
PRO
download
help
buy ($2)
contact
account
login/signup
my favourites
9618 A-Level
2024 May/June
Paper 23 | Question 8
Header & FindModules
Question PDF
Mark Scheme
Open in Code Editor
Regenerate Starter Code
Open Solution
TGsMVsgPl1k
RicksCode.txt
// * Code Author: PseudocodePro // * Date: 2024/05/28 // * Description: A fun project after the exams - can parse and output .srt subtitle files, like a media player // * Categories: Other, Utilities, Art, Records, Custom Modules CONSTANT LAST_SUBTITLE_NUM = 45 CONSTANT ASCII_ART_WIDTH = 54 TYPE Subtitle DECLARE text : STRING DECLARE startTime, endTime : REAL ENDTYPE CONSTANT filename = "lyrics.srt" DECLARE subtitles : ARRAY[0:LAST_SUBTITLE_NUM] OF Subtitle DECLARE emojis : ARRAY[1:5] OF CHAR emojis <-- ['🪩', '🕺', '🥁', '🎵', '🎶'] DECLARE lastEmojiIndex : INTEGER DECLARE line, rick : STRING rick <-- "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣤⣤⠤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠾⠁⠀⠀⠀⠀⠀⠀⢹⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠒⣰⡏⣠⠟⠀⠀⠀⢠⠤⠤⠤⠤⢴⣿⠓⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⢂⢤⣼⣾⣾⣿⠀⠀⠀⠀⢸⠀⠀⠀⠀⠈⣿⡔⢳⡦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⣀⣾⣿⣥⣴⣿⣿⣿⣿⣿⣿⣀⣶⡒⢦⡿⠀⠒⡿⠯⢹⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠽⠆⠀⠀⠀⠀⠰⠤⣽⣿⣿⣿⣿⣿⣿⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠒⠂⠀⠀⠀⠀⠐⠲⣿⣿⣿⣿⣿⣿⣿⣷⣿⡆⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⣼⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⣿⡁⠀⠀⠀⠈⢹⣿⣷⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⡟⠁⠀⢸⡑⡄⠀⠀⠀⢠⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀ ⠀⢠⣿⣿⣿⣿⣿⣿⠟⠛⠉⠀⠀⠀⢧⠀⠀⠀⡇⠈⢢⡀⣠⠇⠀⣿⣿⣿⡟⢿⠻⢿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀ ⢀⣼⣿⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⡤⠜⠀⠀⠀⠹⡾⣟⣯⣝⣦⡼⢻⣿⡏⡇⠸⠀⢠⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀ ⢨⣿⣿⣿⣿⣿⡿⡆⠀⠀⠀⣄⠀⢣⠀⠀⠀⠀⠀⠹⣖⠲⠽⠿⣧⢀⡏⢹⠁⠀⠀⢀⣿⣿⣿⣿⣿⡿⣿⠀⠀⠀⠀⠀⠀⠀ ⢈⣿⣿⣿⣿⣿⠁⢇⠀⠀⠀⠸⡀⠈⢧⠀⠀⠀⠀⠀⢻⢍⣉⡓⣾⠸⡇⢸⠀⠸⡀⡎⢹⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠀ ⠈⣿⣿⣿⣿⣿⠀⠘⡄⠀⠀⠀⡧⠀⠈⠣⣀⠀⠀⠀⠘⡦⠬⢭⣿⠀⢹⠉⠀⡴⠁⡆⠈⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀ ⠐⣿⣿⣿⣿⡏⠀⠐⠚⠀⠀⢀⠇⠀⠀⠀⠈⠓⢤⣀⠀⢹⣿⣿⣯⡀⢸⢀⡞⠀⠀⡇⠀⢿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⢨⣿⣿⣿⡇⠀⢀⣀⣀⣠⣸⠤⣀⠤⠒⠲⠖⠋⠉⡏⠁⠀⢛⣒⡟⢿⡟⠀⠀⠀⡇⠀⢸⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠹⣿⣿⡠⠚⠉⠠⠔⠋⠀⠀⠀⠀⠀⠀⠀⠀⢀⠇⠀⠀⠤⡾⢀⣾⠀⠀⠀⠀⡇⠀⣸⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠈⢿⡁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣘⣷⡒⢲⣻⣧⠎⣹⠀⠀⠀⢸⠀⠘⢻⠉⠓⠦⢄⣀⢞⣇⣀⣀⡀⠀⠀ ⠀⠀⠀⠀⠀⢣⡀⠀⠀⠀⢀⠀⣀⣀⠤⠤⠼⠿⠞⠛⠁⠑⣤⡖⢶⠀⣼⠀⢠⣀⣸⠀⠀⠀⠀⠀⠀⡎⠁⢾⠁⠀⢠⣽⣿⣶ ⠀⠀⠀⠀⠀⠀⠉⠉⠻⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⡧⠼⡄⣿⠀⠘⠛⣿⣶⠤⢄⣀⠀⠀⢳⣤⣀⣀⣀⣼⣿⣿⠿ ⠀⠀⠀⠀⠀⠀⠀⠀⠢⠈⡛⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢯⠈⣷⡿⠀⠀⠀⢻⠀⠀⠀⠀⠈⠑⠚⠷⠤⠋⠙⠿⠈⠛⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠧⠤⠤⠤⠐⠒⠒⠒⠉⠉⠉⠉⠉⠛⢶⠾⠗⠒⠒⠒⠚⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀" CALL readSubtitleFile() OUTPUT rick OUTPUT "" OUTPUT centerText("Listen while running program:") OUTPUT centerText("https://www.youtube.com/watch?v=dQw4w9WgXcQ") OUTPUT centerText("[playing intro music...be patient :)]") OUTPUT centerText("🎵 Rick Astley - Never Gonna Give You Up 🎵") CALL playSubtitles() CALL showEnding() PROCEDURE playSubtitles() DECLARE currentTime, index, subtitleDuration : INTEGER currentTime <-- 0 index <-- 0 WHILE index <= LAST_SUBTITLE_NUM DO CALL WAIT(subtitles[index].startTime - currentTime) CALL CLEAR() OUTPUT rick & "\n" OUTPUT centerText(randomEmoji()) OUTPUT centerText(subtitles[index].text) subtitleDuration <-- subtitles[index].endTime - subtitles[index].startTime CALL WAIT(subtitleDuration) currentTime <-- subtitles[index].endTime index <-- index + 1 ENDWHILE ENDPROCEDURE PROCEDURE readSubtitleFile() OPENFILE filename FOR READ WHILE NOT EOF(filename) READFILE filename, line IF line <> "" AND IS_NUM(line) THEN CALL extractSubtitle(STR_TO_NUM(line)) ENDIF ENDWHILE CLOSEFILE filename ENDPROCEDURE PROCEDURE extractSubtitle(index : INTEGER) DECLARE startTimeStr, endTimeStr, text : STRING DECLARE startTime, endTime : INTEGER READFILE filename, line startTimeStr <-- MID(line, 1, 12) endTimeStr <-- MID(line, 18, 12) startTime <-- timeStringToMilliseconds(startTimeStr) endTime <-- timeStringToMilliseconds(endTimeStr) text <-- "" WHILE NOT EOF(filename) AND line <> "" READFILE filename, line IF line <> "" THEN IF text = "" THEN text <-- text & line ELSE text <-- text & "\n" & line ENDIF ENDIF ENDWHILE subtitles[index].text <-- text subtitles[index].startTime <-- startTime subtitles[index].endTime <-- endTime ENDPROCEDURE PROCEDURE showEnding() CALL CLEAR() OUTPUT rick & " ⠀⠀⣼⡟⡀⠀⠀⠀⠀⠁⡴⠋⠉⠉⠙⡧⡄⣆⠀⠀⠀⠀⠀⣠⣯⡇⠀⢀⣴⡶⣿⢍⣄⢄⡀⠀⠀⠀⣶⡆⠀⠀⢀⣤⡖⡀⠀⠀⠀⠀ ⠀⠈⣿⡿⠿⣿⣷⣆⠀⣟⣏⣀⡀⣀⣠⣇⣷⢻⡆⠀⠀⠀⡼⣿⠋⣀⣦⡋⠯⠉⠀⠁⠃⠷⣽⠀⠀⠀⣿⡇⡠⡿⠉⠁⠀⠀⠀⠀⠀⠀ ⠀⠐⣿⠅⠀⠈⠻⣿⡄⣯⡟⠛⠛⠛⠛⠛⠋⠉⣷⠀⠀⡟⡽⠁⢀⢕⡷⣷⣶⣶⣶⣶⡶⠛⠂⠀⠀⠀⣿⡏⠋⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⣿⡇⠀⠀⠀⣿⡇⠉⠳⣤⣀⣀⣀⣄⡀⠀⠽⡇⣿⠏⠀⠀⠘⣿⡇⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⠀⡿⡇⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠉⠀⠀⠀⠀⠱⠇⠀⠀⠈⠙⠛⠛⠉⠁⠀⠀⠿⠃⠀⠀⠀⠀⠙⠛⣿⣓⣶⣦⣤⣤⡄⠀⠀⠀⠀⣷⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⣤⣤⣄⠀⠀⠀⠀⣀⠤⡤⡄⡀⠀⠂⠀⣶⣆⣀⡀⠀⠀⠀⠉⠉⠛⠓⠛⠃⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⣸⠏⡏⠛⢝⣧⠀⠀⣿⠏⠉⠑⠫⣝⡇⠀⠀⡿⡟⠻⠟⣟⣧⡀⠠⣾⣿⠷⢶⣦⣄⠀⠀⢠⡾⠯⣿⣆⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⣿⢆⡃⠀⡠⡟⡄⠀⡧⠃⠀⠀⠀⠠⡇⠀⠀⣿⡇⠀⠀⠩⡏⡇⠀⣿⣿⠀⠀⠉⢻⣷⡄⢿⡇⠀⠸⣿⡀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠣⣕⢟⣛⠟⣧⡇⠀⣻⣏⣆⣢⣔⠋⠁⠀⠀⠛⠿⠀⠀⠀⠃⠃⠀⢻⡿⠀⠀⠀⠈⣿⢿⠈⠛⠿⠟⢹⣷⡀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⣀⡀⠀⠉⣁⡮⡿⠁⠀⠈⠉⠉⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⠀⠈⠃⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠑⠭⠭⠿⠛⠓⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠢⡄⠀⡆⢀⠀⠀⠀⠀⡄⠀⠀⢀⡠⠄⠄⠄⡀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⠟⠛⠛⢿⡆⠀⠀⠀⠯⠋⠀⠀⠩⣿⠀⠀⢀⢾⠇⠁⣀⣥⠶⠓⠻⢯⡲⡌⡱⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⡁⠀⠀⠀⡸⣿⠀⠀⠀⣄⠀⠀⠀⠈⣮⠢⠀⣮⠏⠀⢨⣯⣧⣆⣒⣨⣡⣯⠏⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠈⠙⠦⣤⡤⠟⢝⡄⠀⠀⠧⠅⠀⠀⠀⣟⡄⡟⠅⠀⠀⠀⡏⣇⠈⠙⠓⠓⠁⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⢟⡅⠀⠀⠘⡇⠀⠀⠀⠈⠿⠃⠀⠀⠀⠀⠉⠻⣿⣦⣤⣤⣔⣯⡍⠁⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⡶⣄⢀⠀⠀⢀⡟⡑⠁⠀⠀⠀⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠋⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠋⠭⠬⠋⠋⠉⠀⠀⠀⠀⠀⠀⠀⢀⡀⡀⡀⠀⠀⠀⠀⠀⢀⢀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠲⡦⡀⠀⠀⢀⡷⠋⣴⠃⠁⠁⡇⠻⣄⠀⠀⠀⣸⢸⠹⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⡦⣰⠏⠁⠀⢿⣀⢀⣴⠇⠀⠈⢯⣆⡦⣯⡋⠞⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣽⠋⠀⠀⠀⠑⠛⠋⠁⠀⠀⠀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⢯⠁⠀⠀⠀⢠⡆⠀⠀⠀⡄⠀⠀⠀⣾⡿⠿⠧⢿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠀⠀⠀⠀⠀⣿⡏⠀⠀⠀⣿⡆⠀⠀⣿⣷⠁⡰⠿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠯⣿⣆⡀⣖⡟⠀⠀⠀⢹⣿⡿⠇⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠉⠀⠀⠀⠀⠸⢧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀" ENDPROCEDURE FUNCTION timeStringToMilliseconds(timeStr : STRING) RETURNS INTEGER DECLARE millis : INTEGER millis <-- STR_TO_NUM(MID(timeStr, 1, 2)) * (60 * 60 * 1000) millis <-- millis + STR_TO_NUM(MID(timeStr, 4, 2)) * (60 * 1000) millis <-- millis + STR_TO_NUM(MID(timeStr, 7, 2)) * 1000 millis <-- millis + STR_TO_NUM(MID(timeStr, 10, 3)) RETURN millis ENDFUNCTION FUNCTION centerText(text : STRING) RETURNS STRING DECLARE numPadding : INTEGER DECLARE padding, newStr, currentLine : STRING DECLARE currentChar : CHAR currentLine <-- "" newStr <-- "" numPadding <-- ((ASCII_ART_WIDTH - LENGTH(text)) DIV 2) padding <-- "" FOR charNum <-- 1 TO LENGTH(text) currentChar <-- MID(text, charNum, 1) IF currentChar = "\n" OR charNum = LENGTH(text) THEN IF charNum = LENGTH(text) THEN currentLine <-- currentLine & currentChar ENDIF numPadding <-- ((ASCII_ART_WIDTH - LENGTH(currentLine)) DIV 2) padding <-- "" FOR padIndex <-- 1 TO numPadding padding <-- padding & " " NEXT padIndex IF newStr <> "" THEN newStr <-- newStr & "\n" ENDIF newStr <-- newStr & padding & currentLine & padding currentLine <-- "" ELSE currentLine <-- currentLine & currentChar ENDIF NEXT charNum RETURN newStr ENDFUNCTION FUNCTION randomEmoji() RETURNS CHAR DECLARE randNum : INTEGER REPEAT randNum <-- 1 + INT(RAND(5)) UNTIL randNum <> lastEmojiIndex lastEmojiIndex <-- randNum RETURN emojis[randNum] ENDFUNCTION
lyrics.srt
0 00:00:18,800 --> 00:00:22,600 We're no strangers to love 1 00:00:22,800 --> 00:00:26,700 You know the rules and so do I 2 00:00:26,900 --> 00:00:30,700 A full commitment's what I'm thinking of 3 00:00:30,900 --> 00:00:34,700 You wouldn't get this from any other guy 4 00:00:34,900 --> 00:00:39,600 I just want to tell you how I'm feeling 5 00:00:39,800 --> 00:00:43,100 Gotta make you understand 6 00:00:43,300 --> 00:00:46,900 Never gonna give you up, never gonna let you down 7 00:00:47,100 --> 00:00:51,400 Never gonna run around and desert you 8 00:00:51,600 --> 00:00:55,300 Never gonna make you cry, never gonna say goodbye 9 00:00:55,500 --> 00:01:00,400 Never gonna tell a lie and hurt you 10 00:01:00,600 --> 00:01:04,400 We've known each other for so long 11 00:01:04,600 --> 00:01:08,800 Your heart's been aching but you're too shy to say it 12 00:01:09,000 --> 00:01:12,900 Inside we both know what's been going on 13 00:01:13,100 --> 00:01:17,100 We know the game and we're gonna play it 14 00:01:17,300 --> 00:01:22,600 And if you ask me how I'm feeling 15 00:01:22,800 --> 00:01:25,300 Don't tell me you're too blind to see 16 00:01:25,500 --> 00:01:29,000 Never gonna give you up, never gonna let you down 17 00:01:29,200 --> 00:01:33,700 Never gonna run around and desert you 18 00:01:33,900 --> 00:01:37,500 Never gonna make you cry, never gonna say goodbye 19 00:01:37,700 --> 00:01:41,800 Never gonna tell a lie and hurt you 20 00:01:42,000 --> 00:01:46,000 Never gonna give you up, never gonna let you down 21 00:01:46,200 --> 00:01:50,600 Never gonna run around and desert you 22 00:01:50,800 --> 00:01:54,500 Never gonna make you cry, never gonna say goodbye 23 00:01:54,700 --> 00:01:59,500 Never gonna tell a lie and hurt you 24 00:01:59,700 --> 00:02:03,500 (Ooh give you up) 25 00:02:03,700 --> 00:02:08,100 (Ooh give you up) 26 00:02:08,300 --> 00:02:11,900 (Ooh) Never gonna give, never gonna give (give you up) 27 00:02:12,100 --> 00:02:16,100 (Ooh) Never gonna give, never gonna give (give you up) 28 00:02:16,300 --> 00:02:20,500 We've known each other for so long 29 00:02:20,700 --> 00:02:24,800 Your heart's been aching but you're too shy to say it 30 00:02:25,000 --> 00:02:29,000 Inside we both know what's been going on 31 00:02:29,200 --> 00:02:33,200 We know the game and we're gonna play it 32 00:02:33,400 --> 00:02:37,600 I just want to tell you how I'm feeling 33 00:02:37,800 --> 00:02:41,100 Gotta make you understand 34 00:02:41,300 --> 00:02:45,100 Never gonna give you up, never gonna let you down 35 00:02:45,300 --> 00:02:49,300 Never gonna run around and desert you 36 00:02:49,500 --> 00:02:53,700 Never gonna make you cry, never gonna say goodbye 37 00:02:53,900 --> 00:02:57,800 Never gonna tell a lie and hurt you 38 00:02:58,000 --> 00:03:02,000 Never gonna give you up, never gonna let you down 39 00:03:02,200 --> 00:03:06,100 Never gonna run around and desert you 40 00:03:06,300 --> 00:03:10,400 Never gonna make you cry, never gonna say goodbye 41 00:03:10,600 --> 00:03:15,100 Never gonna tell a lie and hurt you 42 00:03:15,300 --> 00:03:18,800 Never gonna give you up, never gonna let you down 43 00:03:19,000 --> 00:03:23,200 Never gonna run around and desert you 44 00:03:23,400 --> 00:03:27,300 Never gonna make you cry, never gonna say goodbye 45 00:03:27,500 --> 00:03:32,500 Never gonna tell a lie and hurt you
Syllabus Syntax Highlighting
Cambridge A-Level 9618
Cambridge IGCSE/O-Level 0478/2210